import { _decorator, Node, randomRangeInt } from 'cc';
import { ChengYu_ConfigManager } from '../Manager/ChengYu_ConfigManager';
import { ChengYu_GameData } from '../Data/ChengYu_GameData';

const { ccclass, property } = _decorator;

@ccclass('ChengYuGameFunctions')
export default class ChengYu_GameFunctions {
    //    // 打乱所有子物体
    static DisorderChildren(parent: Node) {
        for (let i = 0; i <= parent.children.length - 1; i++) {
            let child: Node = parent.children[i];
            let index = randomRangeInt(0, parent.children.length);
            child.setSiblingIndex(index);
        }
    }
    static async GetChengYuLevelItem(level_index: number) {
        // let array;
        // array = await ChengYu_ConfigManager.getChengYuLevelDataCfg();

        // console.log(`array`, array);

        // for (let index = 0; index < array.length; index++) {
        //     const element = array[index];
        //     if (level_index >= element.startLevel && level_index <= element.endLevel) {
        //         return element;
        //     }
        // }

        return {};
    }
    // static async GetChengYuLevelData(level_index: number) {
    //     const item_data = await ChengYu_GameFunctions.GetChengYuLevelItem(level_index);
    //     // console.log(`item_data`, item_data);

    //     const levelArr = item_data.levelArr;
    //     const levelType = item_data.levelType;


    //     let diff_index: number = level_index - item_data.startLevel;
    //     const index = levelArr[diff_index];

    //     return {
    //         levelType: levelType,
    //         index: index,
    //     };
    // }

    // //    // 1-接龙
    // //    // 2-填字 一个成语
    // //    // 3-看图
    // static async GetLevelItemAll(level_index: number) {
    //     let value = {};

    //     // const data = await ChengYu_GameFunctions.GetChengYuLevelData(level_index);
    //     // const level_index_type = data.index;
    //     //     value = await ChengYu_GameFunctions.GetLevelItemGame_1(level_index_type);

    //     // if (data.levelType === 1) {
    //     //     value = await ChengYu_GameFunctions.GetLevelItemGame_1(level_index_type);
    //     // } else if (data.levelType === 2) {
    //     //     value = await ChengYu_GameFunctions.GetLevelItemGame_2(level_index_type);
    //     // } else if (data.levelType === 3) {
    //     //     value = await ChengYu_GameFunctions.GetLevelItemGame_3(level_index_type);
    //     // }

    //     return value;
    // }

    // static async GetLevelItemAll222(level_index: number) {
    //     let value = {};
    //     const data = await ChengYu_GameFunctions.GetChengYuLevelData(level_index);
    //     if (data.levelType === 1) {
    //         value = ChengYu_GameData.GameData.LevelData.idiom; // 数组
    //     } else if (data.levelType === 2) {
    //         value = ChengYu_GameData.GameData.LevelData.idiom; // 字符串
    //     } else if (data.levelType === 3) {
    //         value = ChengYu_GameData.GameData.LevelData.word; // word
    //     }
    //     return value;
    // }
    //    // 1-接龙
    static async GetLevelItemGame_1(level_index: number) {
        let data = await ChengYu_ConfigManager.getChengYuGameDataCfg_1();

        for (const key in data) {
            if (Object.prototype.hasOwnProperty.call(data, key)) {
                if (data[key].id.toString() === level_index.toString()) {
                    return data[key];
                }
            }
        }

        return {};
    }
    //    // 2-填字 一个成语
    static async GetLevelItemGame_2(level_index: number) {
        let data = await ChengYu_ConfigManager.getChengYuGameDataCfg_2();

        for (const key in data) {
            if (Object.prototype.hasOwnProperty.call(data, key)) {
                if (key.toString() === level_index.toString()) {
                    return data[key];
                }
            }
        }

        return {};
    }
    //    // 3-看图
    static async GetLevelItemGame_3(level_index: number) {
        let data3 = await ChengYu_ConfigManager.getChengYuGameDataCfg_3();
        // const data = XXL_GameFunctions.GetChengYuLevelData(level_index);

        for (let index = 0; index < data3.length; index++) {
            const element = data3[index];
            if (element.id === level_index) {
                return element;
            }
        }

        return {};
    }
    //    // 获取成语详细信息
    static async GetChengYuData(chengyu) {
        let data = await ChengYu_ConfigManager.getChengYuGameDataCfg_idiom_info();

        for (let index = 0; index < data.length; index++) {
            const element = data[index];
            if (element.word.toString() === chengyu.toString()) {
                return element;
            }
        }

        // for (const key in data) {
        //     if (Object.prototype.hasOwnProperty.call(data, key)) {
        //         if (key.toString() === chengyu.toString()) {
        //             return data[key];
        //         }
        //     }
        // }

        return null;
    }
    // static GetWord() {
    //     let target: any = {};
    //     const randomValue = randomRangeInt(1, 100 + 1); // 80
    //     let sub = 0;
    //     for (let index = 0; index < XXL_WordData.length; index++) {
    //         const element = XXL_WordData[index];
    //         sub += element.ratio;
    //         if (randomValue <= sub) {
    //             target.index = index;
    //             target.itemdata = element;
    //             break;
    //         }
    //     }
    //     // xwLog(`GetWord`, randomValue, target);
    //     return target;
    // }
    static GetWordCount() {
        let return_value = 0;

        for (const iterator of ChengYu_GameData.CurrentMapData) {
            if (iterator >= 100) {
                return_value++;
            }
        }

        return return_value;
    }
    // static GetWordList() {
    //     let return_value = [];
    //     const count: number = XXL_GameFunctions.GetWordCount();
    //     for (let index = 0; index < count; index++) {
    //         const element = XXL_GameFunctions.GetWord();
    //         return_value.push(element);
    //     }
    //     return return_value;
    // }
    // 名称
    // static getGameItemTitleImageName(itemId: PropsConst.ITEM_ID | number) {
    //     let imageName = "";
    //     switch (itemId) {
    //         case PropsConst.XXL_ITEM_ID.XXL_luck_stick:
    //             imageName = "ft_xiaoxiaole_12";
    //             break;
    //         case PropsConst.XXL_ITEM_ID.XXL_get_step:
    //             imageName = "ft_xiaoxiaole_13";
    //             break;
    //         default:
    //             break;
    //     }
    //     return imageName;
    // }
    // // 图标
    // static getGameItemImageName(itemId: PropsConst.ITEM_ID | number) {
    //     let imageName = "";
    //     switch (itemId) {
    //         case PropsConst.XXL_ITEM_ID.XXL_luck_stick:
    //             imageName = "ic_xiaoxiaole_01";
    //             break;
    //         case PropsConst.XXL_ITEM_ID.XXL_get_step:
    //             imageName = "ic_xiaoxiaole_02";
    //             break;
    //         default:
    //             break;
    //     }
    //     return imageName;
    // }
    // static getGameItemTip(itemId: PropsConst.ITEM_ID | number) {
    //     let tip = "";
    //     switch (itemId) {
    //         case PropsConst.XXL_ITEM_ID.XXL_luck_stick:
    //             tip = "使用模仿棒可以消除任意位置的小动物";
    //             break;
    //         case PropsConst.XXL_ITEM_ID.XXL_get_step:
    //             tip = "额外获得5步数";
    //             break;
    //         default:
    //             break;
    //     }
    //     return tip;
    // }

    // static getPropItemNum(itemId: PropsConst.XXL_ITEM_ID | number) {
    //     let curNum = 0;
    //     if (itemId == PropsConst.XXL_ITEM_ID.XXL_luck_stick) {
    //         curNum = XXL_GameData.skill_1_number;
    //     } else if (itemId == PropsConst.XXL_ITEM_ID.XXL_get_step) {
    //         curNum = XXL_GameData.skill_2_number;
    //     }
    //     return curNum;
    // }
}

/** 调试 */
window["ChengYu_GameFunctions"] = ChengYu_GameFunctions;